package com.naiterui.ehp.bs.im.network.protocl;

import java.io.Serializable;

import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;

/**
 * 多媒体资源(音频、视频)的消息对象
 * 对应一个固定的JSON结构
 * <P>File name : Media.java </P>
 * <P>Author : zhouyanxin </P>
 * <P>Date : 2015年6月19日 </P>
 */
@NoArgsConstructor
@AllArgsConstructor
public class Media implements IChecker, Serializable {

    /**
     * 字段或域定义：<code>serialVersionUID</code>
     */
    private static final long serialVersionUID = -1006639677873531820L;

    /**
     * LOGGER
     */
    private static final Logger LOGGER = LoggerFactory.getLogger(Media.class);

    /**
     * 资源的相对位置
     */
    private String path;

    /**
     * 资源的时间长度
     * 单位：秒
     */
    private Integer timeLength;

    /**
     * 资源的大小
     * 单位：字节
     */
    private Integer size;

    /**
     * 属性检测
     * Media.selfValidate()<BR>
     * <P>Author : zhouyanxin </P>
     * <P>Date : 2015年6月22日 </P>
     *
     * @return
     */
    @Override
    public boolean selfValidate() {
        if (StringUtils.isEmpty(path)) {
            LOGGER.error("media message has no available path!");
            return false;
        }
        return true;
    }

    /**
     * @return String 取得域 path 的方法。
     */
    public String getPath() {
        return path;
    }

    /**
     * @param path 对域 path 的设置方法.
     */
    public void setPath(String path) {
        this.path = path;
    }

    /**
     * @return Integer 取得域 timeLength 的方法。
     */
    public Integer getTimeLength() {
        return timeLength;
    }

    /**
     * @param timeLength 对域 timeLength 的设置方法.
     */
    public void setTimeLength(Integer timeLength) {
        this.timeLength = timeLength;
    }

    /**
     * @return Integer 取得域 size 的方法。
     */
    public Integer getSize() {
        return size;
    }

    /**
     * @param size 对域 size 的设置方法.
     */
    public void setSize(Integer size) {
        this.size = size;
    }
}
